CSS 规则集(rule-set)由选择器和声明块组成:
:)分隔。;)分隔,声明块用花括号({})括起来。示例:所有 <p> 元素都将居中对齐,并带有红色文本颜色:
p {
color: red;
text-align: center;
}
<p>)。CSS 选择器用于 " 查找 "(或选取)要设置样式的 HTML 元素。我们可以将 CSS 选择器分为五类:

#id#firstname元素。
元素选择器根据元素名称来选择 HTML 元素。
p {
text-align: center;
color: red;
}
#id 选择器使用 HTML 元素的 id 属性来选择特定元素。
元素的 id 在页面中是唯一的,因此 id 选择器用于选择一个唯一的元素!
要选择具有特定 id 的元素,请写一个井号(#),后跟该元素的 id。
<!DOCTYPE html>
<html>
<head>
<style>
#para1 {
text-align: center;
color: red;
}
</style>
</head>
<body>
<p id="para1">Hello World!</p>
<p>本段不受样式影响。</p>
</body>
</html>
注意: id 名称不能以数字开头。
.类选择器选择有特定 class 属性的 HTML 元素。
如需选择拥有特定 class 的元素,请写一个句点(.)字符,后面跟类名。
示例:所有带有 class="center" 的 HTML 元素将为红色且居中对齐:
<!DOCTYPE html>
<html>
<head>
<style>
.center {
text-align: center;
color: red;
}
</style>
</head>
<body>
<h1 class="center">红色和居中对齐的标题</h1>
<p class="center">红色和居中对齐的段落。</p>
</body>
</html>
还可以指定只有特定的 HTML 元素会受类的影响:只有具有 class="center" 的
元素会居中对齐:
p.center {
text-align: center;
color: red;
}
HTML 元素也可以引用多个类。
示例:
元素将根据 class="center" 和 class="large" 进行样式设置:
<p class="center large">This paragraph refers to two classes.</p>
注意: 类名不能以数字开头!
*通用选择器(*)选择页面上的所有的 HTML 元素。
示例:下面的 CSS 规则会影响页面上的每个 HTML 元素:
<!DOCTYPE html>
<html>
<head>
<style>
* {
text-align: center;
color: blue;
}
</style>
</head>
<body>
<h1>Hello world!</h1>
<p>页面上的每个元素都会受到样式的影响。</p>
<p id="para1">我也是!</p>
<p>还有我!</p>
</body>
</html>
分组选择器选取所有具有相同样式定义的 HTML 元素。
如需对选择器进行分组,请用逗号来分隔每个选择器。
/* 下面的 CSS 代码(h1、h2 和 p 元素具有相同的样式定义): */
h1 {
text-align: center;
color: red;
}
h2 {
text-align: center;
color: red;
}
p {
text-align: center;
color: red;
}
/* 分组后: */
h1, h2, p {
text-align: center;
color: red;
}
CSS 选择器可以包含多个简单选择器。在简单选择器之间,我们可以包含一个组合器。
CSS 中有四种不同的组合器:
空格)>)+)~)空格后代选择器匹配属于指定元素后代的所有元素。
示例:选择 <div> 元素内的所有 <p> 元素:
<!DOCTYPE html>
<html>
<head>
<style>
div p {
background-color: yellow;
}
</style>
</head>
<body>
<div>
<p>div 中的第 1 段。</p>
<p>div 中的第 2 段。</p>
<section><p>div 中的第 3 段。</p></section>
</div>
<p>第 4 段。不在 div 中。</p>
<p>第 5 段。不在 div 中。</p>
</body>
</html>

>子选择器匹配属于指定元素子元素的所有元素。
示例:子选择属于 <div> 元素子元素的所有 <p> 元素:
<!DOCTYPE html>
<html>
<head>
<style>
div > p {
background-color: yellow;
}
</style>
</head>
<body>
<div>
<p>div 中的第 1 段。</p>
<p>div 中的第 2 段。</p>
<section><p>div 中的第 3 段。</p></section> <!-- not Child but Descendant -->
<p>div 中的第 4 段。</p>
</div>
<p>第 5 段。不在 div 中。</p>
<p>第 6 段。不在 div 中。</p>
</body>
</html>

+相邻兄弟选择器匹配所有作为指定元素的相邻同级的元素。
兄弟(同级)元素必须具有相同的父元素," 相邻 " 的意思是 " 紧随其后 "。
示例:选择紧随 <div> 元素之后的所有 <p> 元素:
<!DOCTYPE html>
<html>
<head>
<style>
div + p {
background-color: yellow;
}
</style>
</head>
<body>
<div>
<p>div 中的第 1 段。</p>
<p>div 中的第 2 段。</p>
</div>
<p>第 3 段。不在 div 中。</p>
<p>第 4 段。不在 div 中。</p>
</body>
</html>

~通用兄弟选择器匹配属于指定元素的同级元素的所有元素。
<!DOCTYPE html>
<html>
<head>
<style>
div ~ p {
background-color: yellow;
}
</style>
</head>
<body>
<p>段落1。</p>
<div>
<p>段落2。</p>
</div>
<p>段落3。</p>
<code>一些代码。</code>
<p>段落4。</p>
</body>
</html>

伪类用于定义元素的特殊状态。
例如,它可以用于:
selector:pseudo-class {
property: value;
}
链接能够以不同的方式显示:
<!DOCTYPE html>
<html>
<head>
<style>
/* 未访问的链接 */
a:link {
color: red;
}
/* 访问过的链接 */
a:visited {
color: green;
}
/* 鼠标悬停在链接上 */
a:hover {
color: hotpink;
}
/* 选中的链接 */
a:active {
color: blue;
}
</style>
</head>
<body>
<p><b><a href="default.asp" target="_blank">这是一个链接</a></b></p>
<p><b>注意:</b> a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后才能生效。</p>
<p><b>注意:</b> a:active 必须在 CSS 定义中的 a:hover 之后才能生效。</p>
</body>
</html>

注意:
a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后,才能生效a:active 必须在 CSS 定义中的 a:hover 之后才能生效伪类可以与 CSS 类结合使用:
示例:当您将鼠标悬停在例子中的链接上时,它会改变颜色:
<!DOCTYPE html>
<html>
<head>
<style>
a.highlight:hover {
color: #ff0000;
}
</style>
</head>
<body>
<p><a class="highlight" href="css_syntax.asp">CSS 语法</a></p>
<p><a href="default.asp">CSS 教程</a></p>
</body>
</html>

在 <div> 元素上使用 :hover 伪类的实例:
<!DOCTYPE html>
<html>
<head>
<style>
div {
background-color: green;
color: white;
padding: 25px;
text-align: center;
}
div:hover {
background-color: blue;
}
</style>
</head>
<body>
<p>将鼠标悬停在下面的 div 元素上以更改其背景颜色:</p>
<div>鼠标悬停在我身上</div>
</body>
</html>

把鼠标悬停到 <div> 元素以显示 <p> 元素(类似工具提示的效果):
<!DOCTYPE html>
<html>
<head>
<style>
p {
display: none;
background-color: yellow;
padding: 20px;
}
div:hover p {
display: block;
}
</style>
</head>
<body>
<div>将鼠标悬停在我身上以显示 p 元素
<p>田田! 我在这里!</p>
</div>
</body>
</html>

:first-child 伪类与指定的元素匹配:该元素是另一个元素的第一个子元素。
<!DOCTYPE html>
<html>
<head>
<style>
p:first-child {
color: red;
}
</style>
</head>
<body>
<p>这是一些文字。</p>
<p>这是一些文字。</p>
<p><b>注意:</b>要使 :first-child 在 IE8 及更早版本中工作,必须声明 DOCTYPE。</p>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<style>
p i:first-child {
color: red;
}
</style>
</head>
<body>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p><b>注意:</b>要使 :first-child 在 IE8 及更早版本中工作,必须声明 DOCTYPE。</p>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<style>
p:first-child i {
color: red;
}
</style>
</head>
<body>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p>我是一个<i>坚强</i>的人。 我是一个<i>坚强</i>的人。</p>
<p><b>注意:</b>要使 :first-child 在 IE8 及更早版本中工作,必须声明 DOCTYPE。</p>
</body>
</html>

:lang 伪类允许您为不同的语言定义特殊的规则。
示例::lang 为属性为 lang="no" 的 <q> 元素定义引号:
<!DOCTYPE html>
<html>
<head>
<style>
q:lang(no) {
quotes: "~" "~";
}
</style>
</head>
<body>
<p>一些文本 <q lang="no">段落中的引用</q> 一些文本。</p>
<p>在这个例子中,:lang 为 lang="no" 的 q 个元素定义了引号:</p>
<p><b>注意:</b> IE8 仅在指定了 !DOCTYPE 时才支持 :lang 伪类。</p>
</body>
</html>

有三种插入样式表的方法:
每张 HTML 页面必须在 head 部分的 <link> 元素内包含对外部样式表文件的引用。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="mystyle.css">
</head>
<body>
<h1>这是一个标题</h1>
<p>这是一个段落。</p>
</body>
</html>
mystyle.css:
body {
background-color: lightblue;
}
h1 {
color: navy;
margin-left: 20px;
}
注意:请勿在属性值和单位之间添加空格(例如 margin-left: 20 px;)。正确的写法是:margin-left: 20px;
内部样式是在 head 部分的 <style> 元素中进行定义。
<!DOCTYPE html>
<html>
<head>
<style>
body {
background-color: linen;
}
h1 {
color: maroon;
margin-left: 40px;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>这是一个段落。</p>
</body>
</html>
行内样式(也称内联样式)可用于为单个元素应用唯一的样式。
如需使用行内样式,请将 style 属性添加到相关元素。style 属性可包含任何 CSS 属性。
!DOCTYPE html>
<html>
<body>
<h1 style="color:blue;text-align:center;">This is a heading</h1>
<p style="color:red;">这是一个段落。</p>
</body>
</html>
当为某个 HTML 元素指定了多个样式时,会使用哪种样式呢?
页面中的所有样式将按照以下规则 " 层叠 " 为新的 " 虚拟 " 样式表,其中第一优先级最高:
因此,行内样式具有最高优先级,并且将覆盖外部和内部样式以及浏览器默认样式。